草庐IT

Android Drawable.createFromStream 分配了太多内存

全部标签

c++ - 潜在狄利克雷分配 (LDA) 实现

有人知道是否存在适用于Win32平台的LDA算法的一些实现(无论是库还是应用程序)?也许是C/C++或其他可以编译的语言? 最佳答案 老实说,我只是用谷歌搜索了LDA,因为我很好奇它是什么,第二个结果是aCimplementationofLDA.它用gcc编译得很好,尽管会出现一些警告。我不知道它是否是纯ANSIC,但考虑到有适用于Windows的gcc,这应该不是问题。如果您在编译时遇到问题,请提出一个具体的问题。 关于c++-潜在狄利克雷分配(LDA)实现,我们在StackOverf

C++ - 直接写入内存(内核)

我之前也问过同样的问题,但是我的帖子不知为何被删除了。无论如何,我正在尝试使用C++并编写一个允许我直接访问内存并向其中写入内容的程序。我听说我需要对内核做一些事情,因为它是连接操作系统和应用程序的“桥梁”(我认为)。无论如何,我可以为内核下载一些sdk吗?我在我之前的帖子(一段时间后被删除)中说过,这样做的原因是因为我想按照我大学教授的要求尝试让Windows7崩溃。(所以请不要问我诸如“你为什么要让windows崩溃?”之类的问题……)任何帮助将不胜感激。 最佳答案 如果您对使用内核感兴趣,您可能正在寻找Windows驱动程序工

windows - 服务启动的进程无法分配内存

我有一个作为LocalSystem帐户运行的C#服务,它根据需要启动许多其他进程。这几个月一直很好。就在本周,一些子流程崩溃了。我已将远程调试器附加到它们,但它们在内存分配方面失败(C++new运算符返回0x0),这是崩溃的间接原因。有趣的是,如果我将RDP接入机器,我可以轻松地从CMD启动进程,没有任何问题。然而,当服务启动它时,不行。机器运行的是WindowsXPSP3。这不是因为提交费用大约是物理RAM的80%。服务可以使用多少进程或多少内存有一些特殊限制,包括该服务产生的进程?为什么这些进程无法分配内存的任何其他想法。编辑:我已经仔细查看了SysInternals的Procmo

Windows + wmic + 内存

我想在批处理脚本中汇总所有名为“test.exe”的程序的已用内存。我可以使用以下命令获取所有相应进程的内存使用情况:C:\>wmicprocesswherename="test.exe"getworkingsetsize|findstr/v"WorkingSetSize"5575884866174976所以,我想我想用FOR循环将所有这些值相加。以下命令只会显示i变量,但我仍然收到附加错误。C:\>for/F%iIN('wmicprocesswherename="test.exe"getworkingsetsize^|findstr/v"WorkingSetSize"')DOecho

c++ - 内存模块是否映射到进程的虚拟空间?

我在Windows上看到函数EnumProcessModules返回为指定进程加载的多个模块(其中一些应该是系统dll,如guard32.dll、version.dll等。)我的问题是:这些模块是否映射到进程的虚拟空间?我可以从主应用程序代码跳转到位于这些模块之一的指令(当然知道地址)吗? 最佳答案 是的,DLL应该映射到进程虚拟地址空间。如果页面中的代码尚未执行,则映射可能不会得到真实物理页面的支持,并且当然执行“随机”代码位而没有正确的初始化或设置代码以正确执行(例如调用处理函数使用一些需要在另一个函数中分配的数据)显然会在一些

windows - WinDbg - 将字符串参数与内存中的字符串进行比较

我需要将作为参数传递给WinDbg的字符串与内存中的字符串进行比较。如何实现?例如,字符串位于加载的PE中的特定偏移处。所以,我可以通过执行da/c100轻松读取字符串.但是,我如何使用这个字符串,将它与arg1进行比较?,在WinDbg脚本中,使用.if?(和$SPAT(),我猜)我试图读取da的输出命令进入别名或用户定义的寄存器,但我没有成功。 最佳答案 您可以使用as/c将字符串分配给别名:0:012>as/cHello.printf"%ma",061300000:012>.echo@"${Hello}"Helloworld然

c++ - 如何正确打印内存中变量的地址?

我正在尝试了解C或C++结构是如何存储在内存中的。我用C++编写了一个小程序,然后将其编译并运行到调试器中。我使用带有%p和&variable的printf来打印地址,但是打印出的地址和内存中的实际地址完全不同。事实上,打印地址甚至无效。知道如何正确打印变量或结构的真实地址吗?谢谢这是我写的程序的源代码:#include#include#include#include#defineXXX__asm__("nop");intmain(){XXX;XXX;constchar*short_string="thisisashortstring";constwchar_t*long_string

windows - 非托管 VC++ 应用程序在 Windows 服务器上的内存消耗

好的,所以我有一个运行在Windows2003服务器上的非常大的多线程非托管C++应用程序(服务器)。它为20-50个执行各种业务逻辑的并发用户托管session...有时由于用户在客户端打开大量窗口而导致对象/session缓存等问题,它可能会使用大量内存(每个窗口都有一个单独的服务器“session”。我们通常会看到超过5-600MB的物理内存和5-600MB的虚拟内存的消耗。一旦达到这一点,我们似乎开始出现“内存不足”错误。现在我知道Windows会在感觉需要释放物理内存时开始页面错误,而且win32应用程序通常只能分配最多4GB的内存,实际上只有2GB可供应用程序实际使用的“用

c++ - 指向动态分配数组的静态指针

所以这个问题比较直截了当,我有几个半大型查找表~500kb一张。现在,这些完全相同的表被几个类实例化(可能很多)使用,考虑到这一点,我不想在每个类中存储相同的表。所以我可以将整个表作为“静态”成员转储到堆栈中,或者我可以有指向这些表的“静态”指针。在任何一种情况下,该类的构造函数都会检查它们是否已初始化,如果没有则进行初始化。但是,我的问题是,如果我选择指向表的静态指针(以免滥用堆栈空间),什么是适当清理这些表的好方法。另请注意,我考虑过使用boost::share_ptr,但选择不使用,这是一个非常小的项目,我不打算添加任何依赖项。谢谢 最佳答案

windows - 获取正在运行的进程的分配内存区域

谁能告诉我如何使用WinAPI函数获取某些进程的内存分配内存区域?我想知道每个区域、起始地址、大小和其他一些信息,例如保护类型等。我找不到任何WinAPI函数来执行此操作;-(谁能帮帮我? 最佳答案 有代码可以使用VirtualQueryEx来暴力破解here:MEMORY_BASIC_INFORMATIONmbi;/*Getmaximumaddressrangefromsysteminfo*/GetSystemInfo(&si);/*walkprocessaddresses*/lpMem=0;while(lpMemmbi.Base